import { Controller, Get, UseGuards } from '@nestjs/common';
import { ApiTags, ApiOperation, ApiResponse } from '@nestjs/swagger';
import { AuthGuard } from '@nestjs/passport';
import { AdminService } from './admin.service';
import { SystemStatsDto, AdminRecommendedPlaylistDto } from './admin.dto';
import { AdminGuard } from './admin.guard';

@ApiTags('admin')
@Controller('admin')
export class AdminController {
  constructor(private readonly adminService: AdminService) {}

  @ApiOperation({ summary: '获取系统统计信息' })
  @ApiResponse({
    status: 200,
    type: SystemStatsDto,
    description: '成功获取系统统计信息',
  })
  @ApiResponse({ status: 403, description: '没有管理员权限' })
  @UseGuards(AuthGuard('jwt'), AdminGuard) // 需要JWT认证和管理员权限
  @Get('stats')
  async getSystemStats(): Promise<SystemStatsDto> {
    return this.adminService.getSystemStats();
  }

  @ApiOperation({ summary: '获取推荐歌单列表' })
  @ApiResponse({
    status: 200,
    type: [AdminRecommendedPlaylistDto],
    description: '成功获取推荐歌单列表',
  })
  @ApiResponse({ status: 403, description: '没有管理员权限' })
  @UseGuards(AuthGuard('jwt'), AdminGuard) // 需要JWT认证和管理员权限
  @Get('recommended-playlists')
  async getRecommendedPlaylists(): Promise<AdminRecommendedPlaylistDto[]> {
    return this.adminService.getRecommendedPlaylists();
  }

  // 可以添加更多的管理员API接口
}
